package com.haust.leyou.service;

import com.haust.leyou.utils.ThreadUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;

/**
 * @Auther: csp1999
 * @Date: 2020/12/16/19:43
 * @Description: 生成HTML页面的Service
 */
@Service
public class GoodsHtmlService {

    // themleaf 模板引擎
    @Autowired
    private TemplateEngine templateEngine;

    @Autowired
    private GoodsService goodsService;

    /**
     * 根据spuId 将对应的商品详情页面生成HTML静态页面
     *
     * @param spuId
     */
    public void createHTML(Long spuId) {

        // 初始化运行上下文: org.thymeleaf.context 包下
        Context context = new Context();

        // 设置数据模板
        // 从goodsService.loadData(spuId) 方法中获取模板页面中需要渲染的数据
        context.setVariables(goodsService.loadData(spuId));

        // 获取输出流
        // 将需要输出的html 文件地址设置为服务器中的nginx 目录下的html 目录中的item文件夹下（我这里nginx 部署的是win10本地！）
        File file = new File(
                "M:\\note\\MyProjects\\heima-leyou\\tools\\nginx-1.14.0\\html\\item\\" + spuId + ".html");
        PrintWriter writer = null;
        try {
            writer = new PrintWriter(file);
            // 模板引擎生成静态html 页面
            templateEngine.process("item", context, writer);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            // 判断并关闭流
            if (writer != null) {
                writer.close();
            }
        }
    }

    /**
     * 新建线程处理页面静态化
     *
     * @param spuId
     */
    public void asyncExcute(Long spuId) {
        ThreadUtils.execute(() -> createHTML(spuId));
        /*ThreadUtils.execute(new Runnable() {
            @Override
            public void run() {
                createHtml(spuId);
            }
        });*/
    }

    /**
     * 删除静态页面
     * @param id
     */
    public void deleteHTML(Long id) {
        File file = new File(
                "M:\\note\\MyProjects\\heima-leyou\\tools\\nginx-1.14.0\\html\\item\\" + id + ".html");

        // 如果该文件存在，就将其删除
        file.deleteOnExit();
    }
}
